print("----------10.4 存储数据-------------------------------")
# 使用模块 json 来存储数据。

print("-----------10.4.1 使用 json.dumps() 和 json.loads()------------")
from pathlib import Path
import json
# 定义一个数字列表
numbers = [2, 3, 5, 7, 11, 13]

path = Path('./10_file_exception/numbers.json')
# 用于将 Python 对象（如列表、字典等）序列化为 JSON 格式的字符串
contents = json.dumps(numbers)
# 将 JSON 格式的字符串写入文件
path.write_text(contents)

# 读取文件中的 JSON 格式的字符串
contents = path.read_text()
# 用于将 JSON 格式的字符串反序列化为 Python 对象
numbers1 = json.loads(contents)
print(numbers1)

print("-----------10.4.2 保存和读取用户生成的数据------------")
# 从文件中读取数据时，使用的是 json.load()，而不是 json.loads()。
# username = input("What is your name? ")
# path = Path('./10_file_exception/username.json')
# contents = json.dumps(username)
# path.write_text(contents)
# print(f"We'll remember you when you come back, {username}!")

# 读取文件中的 JSON 格式的字符串
# path = Path('./10_file_exception/username.json')
# if path.exists():
#     username = json.loads(path.read_text())
#     print(f"Welcome back, {username}!")
# else:
#     username = input("What is your name? ")
#     contents = json.dumps(username)
#     path.write_text(contents)
#     print(f"We'll remember you when you come back, {username}!")

print("-----------10.4.3 重构------------")
# 代码能够正确地运行，但可做进一步的改进——将代码划分为一系列完成具体工作的函数。
# 这样的过程称为重构。重构让代码更清晰、更易于理解、更容易扩展。

# def greet_user():
#     """问候用户，并指出其名字"""
#     path = Path('./10_file_exception/username.json')
#     if path.exists():
#         username = json.loads(path.read_text())
#         print(f"Welcome back, {username}!")
#     else:
#         username = input("What is your name? ")
#         contents = json.dumps(username)
#         path.write_text(contents)

# greet_user()

def get_stored_username():
    """如果存储了用户名，就获取它"""
    path = Path('./10_file_exception/username.json')
    if path.exists():
        username = json.loads(path.read_text())
    else:
        return None
    return username

def get_new_username():
    """提示用户输入用户名"""
    username = input("What is your name? ")
    contents = json.dumps(username)
    path = Path('./10_file_exception/username.json')
    path.write_text(contents)
    return username

def greet_user():
    """问候用户，并指出其名字"""
    username = get_stored_username()
    if username:
        print(f"Welcome back, {username}!")
    else:
        username = get_new_username()
        print(f"We'll remember you when you come back, {username}!")

greet_user()